package com.easyadmin.pro.modules.sys.controller;

import com.easyadmin.pro.common.constants.HttpConstants;
import com.easyadmin.pro.common.controller.BaseController;
import com.easyadmin.pro.common.page.Pageable;
import com.easyadmin.pro.common.vo.RestResult;
import com.easyadmin.pro.modules.sys.query.DictItemQuery;
import com.easyadmin.pro.modules.sys.service.IDictItemService;
import com.easyadmin.pro.modules.sys.vo.DictItemVo;
import com.easyadmin.pro.tool.DataDictionaryUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.io.Serializable;


/**
 *  控制层。
 *
 * @author xulin
 * @since 2024-08-19
 */
@RestController
@RequestMapping(HttpConstants.SYS_MODULE_PATH + "/dictItem/")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class DictItemController extends BaseController {

    private final IDictItemService iDictItemService;

    /**
     * 添加。
     *
     * @param dictItemVo
     * @return
     */
    @PostMapping("save")
    public RestResult save(@RequestBody @Validated DictItemVo dictItemVo) {
        iDictItemService.saveDictItem(dictItemVo);
        return success();
    }

    /**
     * 根据主键删除。
     *
     * @param id 主键
     * @return
     */
    @DeleteMapping("remove/{id}")
    public RestResult remove(@PathVariable Serializable id) {
        iDictItemService.removeDictItem(id);
        return success();
    }

    /**
     * 分页查询。
     *
     * @param dictItemQuery
     * @return 分页数据
     */
    @GetMapping("page")
    public RestResult page(DictItemQuery dictItemQuery) {
        return success(Pageable.of(dictItemQuery, () -> iDictItemService.queryPage(dictItemQuery)));
    }

    @GetMapping("dataType")
    public RestResult dataType() {
        return success(DataDictionaryUtils.getDataDicTree("DATA_TYPE"));
    }

}
